package Day016_字符流_Properties类.demo02_IO异常的处理;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author zhangyan
 * @date 2020/5/8 10:38
 */
/*
    使用字符流拷贝文件
            1. 创建字符输入流对象,关联数据源文件路径
            2. 创建字符输出流对象,关联目的地文件路径
            3. 定义变量,用来存储读取到的字符数据
            4. 循环读取
            5. 边读边写
            6. 关闭流释放资源

    注意:
        字节流可以拷贝一切文件
        字符流只能操作文本文件
 */
public class Test1_JDK7以前的异常处理 {
    public static void main(String[] args) {
        //定义在外面,不然finally无权限调用fr fw变量
        FileReader fr = null;
        FileWriter fw = null;
        try {
            //1. 创建字符输入流对象,关联数据源文件路径
            fr = new FileReader("Demo02\\aaa\\d.txt");
            //2. 创建字符输出流对象,关联目的地文件路径
            fw = new FileWriter("Demo02\\aaa\\dCopy.txt");
            //3. 定义变量,用来存储读取到的字符数据
            int len;
            //4. 循环读取
            //5. 边读边写
            while ((len = fr.read()) != -1){
                fw.write(len);
            }
        } catch (IOException e){
            System.out.println("出现异常");
        } finally {              //finally代码块必定执行
            //6. 关闭流释放资源
            try {
                if(fw != null){  // fw不能是null,null调用close方法 空指针异常
                fw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (fr != null){ // fr不能是null,null调用close方法 空指针异常
                fr.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    // Ctrl + Alt + T

    private static void method() throws IOException {
        //一次读取一个字符 拷贝文件

        //1. 创建字符输入流对象,关联数据源文件路径
        FileReader fr = new FileReader("Demo02\\aaa\\d.txt");
        //2. 创建字符输出流对象,关联目的地文件路径
        FileWriter fw = new FileWriter("Demo02\\aaa\\dCopy.txt");
        //3. 定义变量,用来存储读取到的字符数据
        int len;
        //4. 循环读取
        //5. 边读边写
        while ((len = fr.read()) != -1){
            fw.write(len);
        }
        //6. 关闭流释放资源
        fw.close();
        fr.close();
    }
}
